VIM ex 特殊字符

注意: 这些是要执行的 Ex 命令行中的特殊字符。如果你想要在录入时插入特殊的内容,
可以使用 CTRL-R 命令。例如,% 表示当前文件名,而 CTRL-R % 则立即插入当前文件
名。见 c_CTRL-R

备注: 在 Vim 脚本中要避免特殊字符,可用 fnameescape()

在 Ex 命令中,下列字符在可以使用文件名的地方有特殊的意义。它们同样可以用到表达
式函数 expand()expand()

        %       被当前文件名取代。                              :_% c_%                   
        #       被轮换文件名取代。                              :_# c_#                   
        #n      (n 是一个数字) 被第 n 个缓冲区的文件名取代。    :_#0 :_#n 
                "#0" 与 "#" 相同。                                     c_#n                      
        ##      被参数列表里的所有文件名 (使用空格符分隔) 取代。 :_## c_##
                文件名中的空格符前面会加一个反斜杠。
        #<n     (n 是一个正数) 被第 n 个旧文件名取代。          :_#< c_#< 
                要得到这个数值,见 :oldfiles 或 v:oldfiles。            E809
                {仅当编译时加入 +eval 和 +viminfo 特性才可用}

注意: 除了 #<n 以外,它们只给出输入时使用的文件名。如果需要绝对路径 (当从另
一个目录使用文件名的时候),你需要加 :p。见 filename-modifiers

#<n 项返回绝对路径,但在主目录下的文件名会以 ~/ 开始。

注意: 空格符前面会插入反斜杠,以便 Vim 命令会正确地解释文件名。但是 shell 命令
不会如此。为此,你可以使用引号 (但对包含引号和通配符的文件名会有问题):

:!ls "%"
:r !spell "%"    

要避免 %# 的特殊含义,可以在它前面插入一个反斜杠。细节: 只要有反斜杠在
这些字符前面,它们就不具备特殊含义,不管有多少个反斜杠。